SNA Descritive Analysis from “Projeto Redes de Atenção às pessoas que consomem álcool e outras Drogas em Juiz de Fora-MG Brazil” - SNArRDJF

Here you can find a basic script to analysis data from SNArRDJF - this script was elaborated considering its use for orther matrix adjacency data from SNArRDJF - Here we are going to analyse:

1 14_ACESSO F) Seu serviço tem facilade de entrar em contato com este serviço para realizar ativades em conjunto (var12).

########################## Basic Preparation ##### `#########################

2 Loading objects generated with previous script

rm(list = ls()) # removing previous objects to be sure that we don't have objects conflicts name
load("~/SNArRDJF/Robject/var12_data.RData")

2.1 Reload packages

suppressMessages(library(RColorBrewer))
#suppressMessages(library(car))
#suppressMessages(library(xtable))
suppressMessages(library(igraph))
#suppressMessages(library(miniCRAN))
#suppressMessages(library(magrittr))
#suppressMessages(library(keyplayer))
suppressMessages(library(dplyr))
#suppressMessages(library(feather))
#suppressMessages(library(visNetwork))
#suppressMessages(library(knitr))
suppressMessages(library(DT))

2.2 Adding phantom tools

#In order to get dinamic javascript object install those ones. If you get problems installing go to Stackoverflow.com and type your error to discover what to do. In some cases the libraries need to be intalled in outside R libs.
#devtools::install_github("wch/webshot")
#webshot::install_phantomjs()

2.3 Setting a random seed - this is a good strategy to keep the same graph pattern layout in a new report generation

set.seed(123)

2.4 Simplify Graph - removing loops and duble edges

#var12<-simplify(var12) #Simplify

3 Closeness - centrality based on distance to others in the graph

How close an actor to all the other actors in network?

High closeness centrality - short communication path to others, minimal number of steps to reach others.

Answers the “Kevin Bacon” question:

How many steps are required to access every other vertex from a given vertex?

One practical implication of this metric: it helps you gauge how information might spread within your network, and who might be the best people to leverage if you need to make sure information gets around. Link here: http://www.tc.umn.edu/~alink/R-social-network-analysis.html

Closeness centrality can be defined as a measure of how far other nodes are from the node in question. Nodes with high closeness centrality are likely to be relatively efficient in receiving or transmitting information to/from distant parts of the social network.

Scores may be interpreted as arising from a reciprocal process in which the centrality of each actor is proportional to the sum of the centralities of those actors to whom he or she is connected.

In general, vertices with high eigenvector centralities are those which are connected to many other vertices which are, in turn, connected to many others (and so on). (The perceptive may realize that this implies that the largest values will be obtained by individuals in large cliques (or high-density substructures)

3.1 Closeness Non-normalized

3.1.1 Saving to Igraph object

V(var12)$incloseness <- closeness(var12, mode = "in", weights = E(var12)$var12) %>% round(6)
V(var12)$outcloseness <- closeness(var12, mode = "out", weights = E(var12)$var12) %>% round(6)
V(var12)$totalcloseness <- closeness(var12, mode = "total", weights = E(var12)$var12) %>% round(4)

3.1.2 Saving to Environment

var12_incloseness<- closeness(var12, mode = "in", weights = E(var12)$var12) %>% round(6)
var12_outcloseness<- closeness(var12, mode = "out", weights = E(var12)$var12) %>% round(6)
var12_totalcloseness<- closeness(var12, mode = "total", weights = E(var12)$var12) %>% round(6)

3.2 Closeness Non-normalized - IN

summary(var12_incloseness)
##      Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
## 0.0000290 0.0001250 0.0001270 0.0001254 0.0001280 0.0001330
sd(var12_incloseness)
## [1] 7.766454e-06

3.2.1 Network Plotting Based On Non-normalized Closeness - IN

V(var12)$incloseness<-closeness(var12, weights = E(var12)$var12, mode="in")

#Get Variable
V(var12)$var12_color_degree<-round(V(var12)$incloseness,6)

#Creating brewer pallette
vertex_var12_color_degree<-
  colorRampPalette(brewer.pal(length(unique(
          V(var12)$var12_color_degree)), "RdBu"))(
            length(unique(V(var12)$var12_color_degree)))

#Saving as Vertex properties 
V(var12)$vertex_var12_color_degree<-
  vertex_var12_color_degree[as.numeric(
  cut(V(var12)$var12_color_degree,
      breaks=length(unique(V(var12)$var12_color_degree))))]

set.seed(123)
#Plotting based only on degree measures 
edge.start <- ends(var12, es=E(var12), names=F)[,1]

# Fixing ego
minC <- rep(-Inf, vcount(var12))
maxC <- rep(Inf, vcount(var12))
minC[1] <- maxC[1] <- 0
co <- layout_with_fr(var12, niter=10^4, minx=minC, maxx=maxC,miny=minC, maxy=maxC, weights = E(var12)$weight)


#PLotting
plot(var12, 
     layout=co,
     edge.color=V(var12)$vertex_var12_color_degree[edge.start],
     edge.arrow.size=closeness(var12, weights = E(var12)$var12, mode="in"),
     edge.width=E(var12)$weight/mean(E(var12)$weight),
     edge.curved = TRUE,
     vertex.color=V(var12)$vertex_var12_color_degree,
     vertex.size=closeness(var12, weights = E(var12)$var12, mode="in")*10^5,
     vertex.frame.color="black",
     vertex.label.color="black",
     vertex.label=get.vertex.attribute(var12,"LABEL_COR"),
     vertex.label.cex=(closeness(var12, weights = E(var12)$var12, mode="in")+10^-5)*2000,
     vertex.label.dist=0,
     rescale=F,
     xlim=range(co[,1]), 
     ylim=range(co[,2])
     )
axis(1)
axis(2)


#Solving Problems with legend rendering 
a<-V(var12)$var12_color_degree
b<-V(var12)$vertex_var12_color_degree
c<-table(a,b)
d<-as.data.frame(c)
e<-subset(d, d$Freq>0)
e<-e[order(e$a,decreasing=T),] 
f<-t(e$a)
g<-t(e$b)

#Adding Legend
legend(x=range(co[,1])[2], 
       y=range(co[,2])[2],
       legend=as.character(f),
       pch=21,
       col = "#777777", 
       pt.bg=as.character(g),
       pt.cex=2,
       bty="n", 
       ncol=1,
       lty=1,
       cex = .3)

#Adding Title
  title("Network Closeness Degree Sized and Colored In - 14_ACESSO F) Seu serviço tem facilade de entrar em contato com este serviço para realizar ativades em conjunto (var12).", sub = "Source: from authors ")
  text( 
    x=range(co[,1])[1],
    y=range(co[,2])[1], 
      labels = sprintf(
             "Median In Closennes:%.4f\nSD In Closennes: %.5f",
             median(closeness(var12, mode="in", weights = E(var12)$var12)), 
             sd(closeness(var12, mode="in", weights = E(var12)$var12))
             )
       )

3.3 Closeness Non-normalized - OUT

summary(var12_outcloseness)
##      Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
## 0.0000290 0.0005880 0.0007500 0.0006471 0.0008640 0.0012350
sd(var12_outcloseness)
## [1] 0.000340156

3.3.1 Network Plotting Based On Non-normalized Closeness - OUT

V(var12)$outcloseness<-closeness(var12, weights = E(var12)$var12, mode="out")

#Get Variable
V(var12)$var12_color_degree<-round(V(var12)$outcloseness,6)

#Creating brewer pallette
vertex_var12_color_degree<-
  colorRampPalette(brewer.pal(length(unique(
          V(var12)$var12_color_degree)), "RdBu"))(
            length(unique(V(var12)$var12_color_degree)))

#Saving as Vertex properties 
V(var12)$vertex_var12_color_degree<-
  vertex_var12_color_degree[as.numeric(
  cut(V(var12)$var12_color_degree,
      breaks=length(unique(V(var12)$var12_color_degree))))]

set.seed(123)
#Plotting based only on degree measures 
edge.start <- ends(var12, es=E(var12), names=F)[,1]

# Fixing ego
minC <- rep(-Inf, vcount(var12))
maxC <- rep(Inf, vcount(var12))
minC[1] <- maxC[1] <- 0
co <- layout_with_fr(var12, niter=10^4, minx=minC, maxx=maxC,miny=minC, maxy=maxC, weights = E(var12)$weight)


#PLotting
plot(var12, 
     layout=co,
     edge.color=V(var12)$vertex_var12_color_degree[edge.start],
     edge.arrow.size=closeness(var12, weights = E(var12)$var12, mode="out"),
     edge.width=E(var12)$weight/2*mean(E(var12)$weight),
     edge.curved = TRUE,
     vertex.color=V(var12)$vertex_var12_color_degree,
     vertex.size=closeness(var12, weights = E(var12)$var12, mode="out")*10^4,
     vertex.frame.color="white",
     vertex.label.color="black",
     vertex.label=get.vertex.attribute(var12,"LABEL_COR"),
     vertex.label.cex=closeness(var12, weights = E(var12)$var12, mode="out")*200,
     vertex.label.dist=0,
     rescale=F,
     xlim=range(co[,1]), 
     ylim=range(co[,2])
     )
axis(1)
axis(2)


#Solving Problems with legend rendering 
a<-V(var12)$var12_color_degree
b<-V(var12)$vertex_var12_color_degree
c<-table(a,b)
d<-as.data.frame(c)
e<-subset(d, d$Freq>0)
e<-e[order(e$a,decreasing=T),] 
f<-t(e$a)
g<-t(e$b)

#Adding Legend
legend(x=range(co[,1])[2], 
       y=range(co[,2])[2],
       legend=as.character(f),
       pch=21,
       col = "#777777", 
       pt.bg=as.character(g),
       pt.cex=2,
       bty="n", 
       ncol=1,
       lty=1,
       cex = .3)

#Adding Title
  title("Network Closeness Degree Sized and Colored OUT - 14_ACESSO F) Seu serviço tem facilade de entrar em contato com este serviço para realizar ativades em conjunto (var12).", sub = "Source: from authors ")
  text( 
    x=range(co[,1])[1],
    y=range(co[,2])[1], 
      labels = sprintf(
             "Median OUT Closennes:%.4f\nSD OUT Closennes: %.5f",
             median(closeness(var12, mode="out", weights = E(var12)$var12)), 
             sd(closeness(var12, mode="out", weights = E(var12)$var12))
             )
       )

3.4 Closeness Non-normalized - ALL

summary(var12_totalcloseness)
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
## 0.000662 0.001081 0.001311 0.001295 0.001515 0.002012
sd(var12_totalcloseness)
## [1] 0.0002820708

3.4.1 Network Plotting Based On Non-normalized Closeness - ALL

V(var12)$allcloseness<-closeness(var12, weights = E(var12)$var12, mode="all")

#Get Variable
V(var12)$var12_color_degree<-round(V(var12)$allcloseness,6)

#Creating brewer pallette
vertex_var12_color_degree<-
  colorRampPalette(brewer.pal(length(unique(
          V(var12)$var12_color_degree)), "RdBu"))(
            length(unique(V(var12)$var12_color_degree)))

#Saving as Vertex properties 
V(var12)$vertex_var12_color_degree<-
  vertex_var12_color_degree[as.numeric(
  cut(V(var12)$var12_color_degree,
      breaks=length(unique(V(var12)$var12_color_degree))))]

set.seed(123)
#Plotting based only on degree measures 
edge.start <- ends(var12, es=E(var12), names=F)[,1]

# Fixing ego
minC <- rep(-Inf, vcount(var12))
maxC <- rep(Inf, vcount(var12))
minC[1] <- maxC[1] <- 0
co <- layout_with_fr(var12, niter=10^4, minx=minC, maxx=maxC,miny=minC, maxy=maxC, weights = E(var12)$weight)


#PLotting
plot(var12, 
     layout=co,
     edge.color=V(var12)$vertex_var12_color_degree[edge.start],
     edge.arrow.size=closeness(var12, weights = E(var12)$var12, mode="all"),
     edge.width=E(var12)$weight/2*mean(E(var12)$weight),
     edge.curved = TRUE,
     vertex.color=V(var12)$vertex_var12_color_degree,
     vertex.size=closeness(var12, weights = E(var12)$var12, mode="all")*10^4,
     vertex.frame.color="white",
     vertex.label.color="black",
     vertex.label=get.vertex.attribute(var12,"LABEL_COR"),
     vertex.label.cex=(closeness(var12, weights = E(var12)$var12, mode="all")+0.00001)*200,
     vertex.label.dist=0,
     rescale=F,
     xlim=range(co[,1]), 
     ylim=range(co[,2])
     )
axis(1)
axis(2)


#Solving Problems with legend rendering 
a<-V(var12)$var12_color_degree
b<-V(var12)$vertex_var12_color_degree
c<-table(a,b)
d<-as.data.frame(c)
e<-subset(d, d$Freq>0)
e<-e[order(e$a,decreasing=T),] 
f<-t(e$a)
g<-t(e$b)

#Adding Legend
legend(x=range(co[,1])[2], 
       y=range(co[,2])[2],
       legend=as.character(f),
       pch=21,
       col = "#777777", 
       pt.bg=as.character(g),
       pt.cex=2,
       bty="n", 
       ncol=1,
       lty=1,
       cex = .3)

#Adding Title
  title("Network Closeness Degree Sized and Colored all - 14_ACESSO F) Seu serviço tem facilade de entrar em contato com este serviço para realizar ativades em conjunto (var12).", sub = "Source: from authors ")
  text( 
    x=range(co[,1])[1],
    y=range(co[,2])[1], 
      labels = sprintf(
             "Median all Closennes:%.4f\nSD all Closennes: %.5f",
             median(closeness(var12, mode="all", weights = E(var12)$var12)), 
             sd(closeness(var12, mode="all", weights = E(var12)$var12))
             )
       )

3.5 Closeness Normalized

3.5.1 Saving to Igraph object

V(var12)$incloseness_n <- closeness(var12, mode = "in",, weights = E(var12)$var12, normalized = T) %>% round(10)
V(var12)$outcloseness_n <- closeness(var12, mode = "out", normalized = T, weights = E(var12)$var12) %>% round(6)
V(var12)$totalcloseness_n <- closeness(var12, mode = "total", normalized = T, weights = E(var12)$var12) %>% round(6)

3.5.2 Saving to Environment

var12_incloseness_n<- closeness(var12, mode = "in", normalized = T, weights = E(var12)$var12) %>% round(6)
var12_outcloseness_n<- closeness(var12, mode = "out", normalized = T, weights = E(var12)$var12) %>% round(6)
var12_totalcloseness_n<- closeness(var12, mode = "total", normalized = T, weights = E(var12)$var12) %>% round(6)

3.5.3 Closeness Normalized - IN

summary(var12_incloseness_n)
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
## 0.005348 0.023320 0.023590 0.023320 0.023770 0.024690
sd(var12_incloseness_n)
## [1] 0.001444952

3.6 Network Plotting Based On Normalized Closeness - IN

V(var12)$incloseness_n<-closeness(var12, weights = E(var12)$var12, mode="in", normalized = T)

#Get Variable
V(var12)$var12_color_degree<-round(V(var12)$incloseness_n,6)

#Creating brewer pallette
vertex_var12_color_degree<-
  colorRampPalette(brewer.pal(length(unique(
          V(var12)$var12_color_degree)), "RdBu"))(
            length(unique(V(var12)$var12_color_degree)))

#Saving as Vertex properties 
V(var12)$vertex_var12_color_degree<-
  vertex_var12_color_degree[as.numeric(
  cut(V(var12)$var12_color_degree,
      breaks=length(unique(V(var12)$var12_color_degree))))]

set.seed(123)
#Plotting based only on degree measures 
edge.start <- ends(var12, es=E(var12), names=F)[,1]

# Fixing ego
minC <- rep(-Inf, vcount(var12))
maxC <- rep(Inf, vcount(var12))
minC[1] <- maxC[1] <- 0
co <- layout_with_fr(var12, niter=10^4, minx=minC, maxx=maxC,miny=minC, maxy=maxC, weights = E(var12)$weight)


#PLotting
plot(var12, 
     layout=co,
     edge.color=V(var12)$vertex_var12_color_degree[edge.start],
     edge.arrow.size=closeness(var12, weights = E(var12)$var12, mode="in",normalized = T),
     edge.width=E(var12)$weight/10*mean(E(var12)$weight),
     edge.curved = TRUE,
     vertex.color=V(var12)$vertex_var12_color_degree,
     vertex.size=(closeness(var12, weights = E(var12)$var12, mode="in",normalized = T))*1000,
     vertex.frame.color="black",
     vertex.label.color="black",
     vertex.label=get.vertex.attribute(var12,"LABEL_COR"),
     vertex.label.cex=closeness(var12, weights = E(var12)$var12, mode="in",normalized = T)*10,
     vertex.label.dist=0,
     rescale=F,
     xlim=range(co[,1]), 
     ylim=range(co[,2])
     )
axis(1)
axis(2)


#Solving Problems with legend rendering 
a<-V(var12)$var12_color_degree
b<-V(var12)$vertex_var12_color_degree
c<-table(a,b)
d<-as.data.frame(c)
e<-subset(d, d$Freq>0)
e<-e[order(e$a,decreasing=T),] 
f<-t(e$a)
g<-t(e$b)

#Adding Legend
legend(x=range(co[,1])[2], 
       y=range(co[,2])[2],
       legend=as.character(f),
       pch=21,
       col = "#777777", 
       pt.bg=as.character(g),
       pt.cex=2,
       bty="n", 
       ncol=1,
       lty=1,
       cex = .3)

#Adding Title
  title("Network Closeness Degree Sized Normalized In - 14_ACESSO F) Seu serviço tem facilade de entrar em contato com este serviço para realizar ativades em conjunto (var12).", sub = "Source: from authors ")
  text( 
    x=range(co[,1])[1],
    y=range(co[,2])[1], 
      labels = sprintf(
             "Median In Closennes:%.4f\nSD In Closennes: %.5f",
             median(closeness(var12, mode="in", weights = E(var12)$var12, normalized = T)), 
             sd(closeness(var12, mode="in", weights = E(var12)$var12, normalized = T))
             )
       )

###Closeness Normalized - OUT

summary(var12_outcloseness_n)
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
## 0.005348 0.109300 0.139500 0.120300 0.160800 0.229600
sd(var12_outcloseness_n)
## [1] 0.06328321

3.7 Network Plotting Based On Normalized Closeness - OUT

V(var12)$outcloseness_n<-closeness(var12, weights = E(var12)$var12, mode="out", normalized = T)

#Get Variable
V(var12)$var12_color_degree<-round(V(var12)$outcloseness_n,6)

#Creating brewer pallette
vertex_var12_color_degree<-
  colorRampPalette(brewer.pal(length(unique(
          V(var12)$var12_color_degree)), "RdBu"))(
            length(unique(V(var12)$var12_color_degree)))

#Saving as Vertex properties 
V(var12)$vertex_var12_color_degree<-
  vertex_var12_color_degree[as.numeric(
  cut(V(var12)$var12_color_degree,
      breaks=length(unique(V(var12)$var12_color_degree))))]

set.seed(123)
#Plotting based only on degree measures 
edge.start <- ends(var12, es=E(var12), names=F)[,1]

# Fixing ego
minC <- rep(-Inf, vcount(var12))
maxC <- rep(Inf, vcount(var12))
minC[1] <- maxC[1] <- 0
co <- layout_with_fr(var12, niter=10^4, minx=minC, maxx=maxC,miny=minC, maxy=maxC, weights = E(var12)$weight)


#PLotting
plot(var12, 
     layout=co,
     edge.color=V(var12)$vertex_var12_color_degree[edge.start],
     edge.arrow.size=closeness(var12, weights = E(var12)$var12, mode="out",normalized = T),
     edge.width=E(var12)$weight/10*mean(E(var12)$weight),
     edge.curved = TRUE,
     vertex.color=V(var12)$vertex_var12_color_degree,
     vertex.size=(closeness(var12, weights = E(var12)$var12, mode="out",normalized = T))*100,
     vertex.frame.color="black",
     vertex.label.color="black",
     vertex.label=get.vertex.attribute(var12,"LABEL_COR"),
     vertex.label.cex=closeness(var12, weights = E(var12)$var12, mode="out",normalized = T)*1.5,
     vertex.label.dist=0,
     rescale=F,
     xlim=range(co[,1]), 
     ylim=range(co[,2])
     )
axis(1)
axis(2)


#Solving Problems with legend rendering 
a<-V(var12)$var12_color_degree
b<-V(var12)$vertex_var12_color_degree
c<-table(a,b)
d<-as.data.frame(c)
e<-subset(d, d$Freq>0)
e<-e[order(e$a,decreasing=T),] 
f<-t(e$a)
g<-t(e$b)

#Adding Legend
legend(x=range(co[,1])[2], 
       y=range(co[,2])[2],
       legend=as.character(f),
       pch=21,
       col = "#777777", 
       pt.bg=as.character(g),
       pt.cex=2,
       bty="n", 
       ncol=1,
       lty=1,
       cex = .3)

#Adding Title
  title("Network Closeness Degree Sized Normalized OUT - 14_ACESSO F) Seu serviço tem facilade de entrar em contato com este serviço para realizar ativades em conjunto (var12).", sub = "Source: from authors ")
  text( 
    x=range(co[,1])[1],
    y=range(co[,2])[1], 
      labels = sprintf(
             "Median OUT Closennes:%.4f\nSD OUT Closennes: %.5f",
             median(closeness(var12, mode="out", weights = E(var12)$var12, normalized = T)), 
             sd(closeness(var12, mode="out", weights = E(var12)$var12, normalized = T))
             )
       )

3.7.1 Closeness Normalized - ALL

summary(var12_totalcloseness_n)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.1231  0.2011  0.2438  0.2408  0.2818  0.3742
sd(var12_totalcloseness_n)
## [1] 0.05246392

3.8 Network Plotting Based On Normalized Closeness - ALL

V(var12)$allcloseness_n<-closeness(var12, weights = E(var12)$var12, mode="all", normalized = T)

#Get Variable
V(var12)$var12_color_degree<-round(V(var12)$allcloseness_n,6)

#Creating brewer pallette
vertex_var12_color_degree<-
  colorRampPalette(brewer.pal(length(unique(
          V(var12)$var12_color_degree)), "RdBu"))(
            length(unique(V(var12)$var12_color_degree)))

#Saving as Vertex properties 
V(var12)$vertex_var12_color_degree<-
  vertex_var12_color_degree[as.numeric(
  cut(V(var12)$var12_color_degree,
      breaks=length(unique(V(var12)$var12_color_degree))))]

set.seed(123)
#Plotting based only on degree measures 
edge.start <- ends(var12, es=E(var12), names=F)[,1]

# Fixing ego
minC <- rep(-Inf, vcount(var12))
maxC <- rep(Inf, vcount(var12))
minC[1] <- maxC[1] <- 0
co <- layout_with_fr(var12, niter=10^4, minx=minC, maxx=maxC,miny=minC, maxy=maxC, weights = E(var12)$weight)


#PLotting
plot(var12, 
     layout=co,
     edge.color=V(var12)$vertex_var12_color_degree[edge.start],
     edge.arrow.size=closeness(var12, weights = E(var12)$var12, mode="all",normalized = T),
     edge.width=E(var12)$weight/10*mean(E(var12)$weight),
     edge.curved = TRUE,
     vertex.color=V(var12)$vertex_var12_color_degree,
     vertex.size=(closeness(var12, weights = E(var12)$var12, mode="all",normalized = T))*100,
     vertex.frame.color="black",
     vertex.label.color="black",
     vertex.label=get.vertex.attribute(var12,"LABEL_COR"),
     vertex.label.cex=closeness(var12, weights = E(var12)$var12, mode="all",normalized = T)*1.5,
     vertex.label.dist=0,
     rescale=F,
     xlim=range(co[,1]), 
     ylim=range(co[,2])
     )
axis(1)
axis(2)


#Solving Problems with legend rendering 
a<-V(var12)$var12_color_degree
b<-V(var12)$vertex_var12_color_degree
c<-table(a,b)
d<-as.data.frame(c)
e<-subset(d, d$Freq>0)
e<-e[order(e$a,decreasing=T),] 
f<-t(e$a)
g<-t(e$b)

#Adding Legend
legend(x=range(co[,1])[2], 
       y=range(co[,2])[2],
       legend=as.character(f),
       pch=21,
       col = "#777777", 
       pt.bg=as.character(g),
       pt.cex=2,
       bty="n", 
       ncol=1,
       lty=1,
       cex = .3)

#Adding Title
  title("Network Closeness Degree Sized Normalized ALL - 14_ACESSO F) Seu serviço tem facilade de entrar em contato com este serviço para realizar ativades em conjunto (var12).", sub = "Source: from authors ")
  text( 
    x=range(co[,1])[1],
    y=range(co[,2])[1], 
      labels = sprintf(
             "Median ALL Closennes:%.4f\nSD ALL Closennes: %.5f",
             median(closeness(var12, mode="all", weights = E(var12)$var12, normalized = T)), 
             sd(closeness(var12, mode="all", weights = E(var12)$var12, normalized = T))
             )
       )

3.9 Closeness Normalized

3.9.1 Saving to Igraph object

V(var12)$incloseness_n <- closeness(var12, weights = E(var12)$var12, mode = "in", normalized = T) %>% round(6)
V(var12)$outcloseness_n <- closeness(var12, weights = E(var12)$var12, mode = "out", normalized = T) %>% round(6)
V(var12)$totalcloseness_n <- closeness(var12, weights = E(var12)$var12, mode = "total", normalized = T) %>% round(6)

3.10 Centralization Closseness

V(var12)$var12_centr_closeness<- centralization.closeness(var12)$res
var12_centr_closeness<- centralization.closeness(var12)$res
var12_centr_closeness_all<- centralization.closeness(var12)

3.10.1 Centralization

var12_centr_closeness_all$centralization
## [1] 0.1625197

3.10.2 Theoretical Max

var12_centr_closeness_all$theoretical_max
## [1] 185.0053

3.11 Network Plotting Based On Centralization Closeness

V(var12)$var12_centr_closeness<- centralization.closeness(var12)$res

#Get Variable
V(var12)$var12_color_degree<-round(V(var12)$var12_centr_closeness,6)

#Creating brewer pallette
vertex_var12_color_degree<-
  colorRampPalette(brewer.pal(length(unique(
          V(var12)$var12_color_degree)), "Spectral"))(
            length(unique(V(var12)$var12_color_degree)))

#Saving as Vertex properties 
V(var12)$vertex_var12_color_degree<-
  vertex_var12_color_degree[as.numeric(
  cut(V(var12)$var12_color_degree,
      breaks=length(unique(V(var12)$var12_color_degree))))]

set.seed(123)
#Plotting based only on degree measures 
edge.start <- ends(var12, es=E(var12), names=F)[,1]

# Fixing ego
minC <- rep(-Inf, vcount(var12))
maxC <- rep(Inf, vcount(var12))
minC[1] <- maxC[1] <- 0
co <- layout_with_fr(var12, niter=10^4, minx=minC, maxx=maxC,miny=minC, maxy=maxC, weights = E(var12)$weight)


#PLotting
plot(var12, 
     layout=co,
     edge.color=V(var12)$vertex_var12_color_degree[edge.start],
     edge.arrow.size=centralization.closeness(var12)$res,
     edge.width=E(var12)$weight/10*mean(E(var12)$weight),
     edge.curved = TRUE,
     vertex.color=V(var12)$vertex_var12_color_degree,
     vertex.size=centralization.closeness(var12)$res*100,
     vertex.frame.color="black",
     vertex.label.color="black",
     vertex.label=get.vertex.attribute(var12,"LABEL_COR"),
     vertex.label.cex=centralization.closeness(var12)$res,
     vertex.label.dist=0,
     rescale=F,
     xlim=range(co[,1]), 
     ylim=range(co[,2])
     )
axis(1)
axis(2)


#Solving Problems with legend rendering 
a<-V(var12)$var12_color_degree
b<-V(var12)$vertex_var12_color_degree
c<-table(a,b)
d<-as.data.frame(c)
e<-subset(d, d$Freq>0)
e<-e[order(e$a,decreasing=T),] 
f<-t(e$a)
g<-t(e$b)

#Adding Legend
legend(x=range(co[,1])[2], 
       y=range(co[,2])[2],
       legend=as.character(f),
       pch=21,
       col = "#777777", 
       pt.bg=as.character(g),
       pt.cex=2,
       bty="n", 
       ncol=1,
       lty=1,
       cex = .3)

#Adding Title
  title("Network Centralization Closeness - 14_ACESSO F) Seu serviço tem facilade de entrar em contato com este serviço para realizar ativades em conjunto (var12).", sub = "Source: from authors ")
  text( 
    x=range(co[,1])[1],
    y=range(co[,2])[1], 
      labels = sprintf(
             "Median Centralization Closeness:%.4f\nSD Centralization Closeness: %.5f",
             median(centralization.closeness(var12)$res), 
             sd(centralization.closeness(var12)$res)
             )
       )

4 Closeness Dinamic Table

4.1 Getting Closeness Measures

var12_incloseness<- closeness(var12, weights = E(var12)$var12, mode = "in") %>% round(6)
var12_outcloseness<- closeness(var12, weights = E(var12)$var12, mode = "out") %>% round(6)
var12_totalcloseness<- closeness(var12, weights = E(var12)$var12, mode = "total") %>% round(6)
var12_incloseness_n<- closeness(var12,weights = E(var12)$var12, mode = "in", normalized = T) %>% round(6)
var12_outcloseness_n<- closeness(var12,weights = E(var12)$var12, mode = "out", normalized = T) %>% round(6)
var12_totalcloseness_n<- closeness(var12,weights = E(var12)$var12, mode = "total", normalized = T) %>% round(6)
var12_centr_closeness <- centralization.closeness(var12)$res %>% round(6)

4.2 Creating a datagrame of measures

var12_df_closseness <- data.frame(
var12_incloseness,
var12_outcloseness,
var12_totalcloseness,
var12_incloseness_n,
var12_outcloseness_n,
var12_totalcloseness_n,
var12_centr_closeness) %>% round(6)

#Adding type
var12_df_closseness <-cbind(var12_df_closseness, V(var12)$LABEL_COR)

#Adding names
names(var12_df_closseness) <- c("In Closeness", "Out Closeness", "Total Closeness","In Closeness Normalized", "Out Closeness Normalized", "Total Closeness Normalized","Centralization Closeness","Type")

#Ordering Variables
var12_df_closseness<-var12_df_closseness[c("Type","In Closeness", "Out Closeness", "Total Closeness","In Closeness Normalized", "Out Closeness Normalized","Total Closeness Normalized", "Centralization Closeness")]

4.3 General tabel - DT

datatable(var12_df_closseness, filter = 'top')

4.4 Aggregating data from previous table - mean

aggdata_mean <-aggregate(var12_df_closseness, by=list(var12_df_closseness$Type), FUN=mean, na.rm=TRUE)

names(aggdata_mean) <- c("Group","Type","In Closeness(M)", "Out Closeness(M)", "Total Closeness(M)","In Closeness Normalized(M)", "Out Closeness Normalized(M)", "Total Closeness Normalized(M)","Centralization Closeness(M)")
  
#Removing Type variable
aggdata_mean<-aggdata_mean[,-c(2)]

4.5 Aggregating data from previous table - sd

aggdata_sd <-aggregate(var12_df_closseness, by=list(var12_df_closseness$Type), FUN=sd, na.rm=TRUE) 

names(aggdata_sd) <- c("Group","Type","In Closeness(SD)", "Out Closeness(SD)", "Total Closeness(SD)","In Closeness Normalized(SD)", "Out Closeness Normalized(SD)", "Total Closeness Normalized(SD)", "Centralization Closeness(SD)")

#Removing Type variable
aggdata_sd<-aggdata_sd[,-c(2)]

#Merging mean and standart deviation
total_table <- merge(aggdata_mean,aggdata_sd,by="Group")

#Rounding
Group<-total_table[,c(1)] #Keeping group
total_table<-total_table[,-c(1)] %>% round(6) #Rouding
total_table<-cbind(Group,total_table) #Binding toghter

#Organizing Variabels
total_table<-total_table[c("Group","In Closeness(M)", "In Closeness(SD)", "Out Closeness(M)", "Out Closeness(SD)", "Total Closeness(M)","Total Closeness(SD)","In Closeness Normalized(M)", "In Closeness Normalized(SD)", "Out Closeness Normalized(M)", "Out Closeness Normalized(SD)", "Total Closeness Normalized(M)","Total Closeness Normalized(SD)", "Centralization Closeness(M)","Centralization Closeness(SD)")]

4.6 Plotting final table with round for Closseness

datatable(total_table, filter = 'top')

4.7 Creating a datagrame of measures (Natureza Governamental)

var12_df_closseness <- data.frame(
var12_incloseness,
var12_outcloseness,
var12_totalcloseness,
var12_incloseness_n,
var12_outcloseness_n,
var12_totalcloseness_n,
var12_centr_closeness) %>% round(6)

#Adding type
var12_df_closseness <-cbind(var12_df_closseness, V(var12)$TIPO1)

#Adding names
names(var12_df_closseness) <- c("In Closeness", "Out Closeness", "Total Closeness","In Closeness Normalized", "Out Closeness Normalized", "Total Closeness Normalized","Centralization Closeness","Type")

#Ordering Variables
var12_df_closseness<-var12_df_closseness[c("Type","In Closeness", "Out Closeness", "Total Closeness","In Closeness Normalized", "Out Closeness Normalized","Total Closeness Normalized", "Centralization Closeness")]

4.8 General tabel - DT

datatable(var12_df_closseness, filter = 'top')

4.9 Aggregating data from previous table - mean

aggdata_mean <-aggregate(var12_df_closseness, by=list(var12_df_closseness$Type), FUN=mean, na.rm=TRUE)

names(aggdata_mean) <- c("Group","Type","In Closeness(M)", "Out Closeness(M)", "Total Closeness(M)","In Closeness Normalized(M)", "Out Closeness Normalized(M)", "Total Closeness Normalized(M)","Centralization Closeness(M)")
  
#Removing Type variable
aggdata_mean<-aggdata_mean[,-c(2)]

4.10 Aggregating data from previous table - sd

aggdata_sd <-aggregate(var12_df_closseness, by=list(var12_df_closseness$Type), FUN=sd, na.rm=TRUE) 

names(aggdata_sd) <- c("Group","Type","In Closeness(SD)", "Out Closeness(SD)", "Total Closeness(SD)","In Closeness Normalized(SD)", "Out Closeness Normalized(SD)", "Total Closeness Normalized(SD)", "Centralization Closeness(SD)")

#Removing Type variable
aggdata_sd<-aggdata_sd[,-c(2)]

#Merging mean and standart deviation
total_table <- merge(aggdata_mean,aggdata_sd,by="Group")

#Rounding
Group<-total_table[,c(1)] #Keeping group
total_table<-total_table[,-c(1)] %>% round(6) #Rouding
total_table<-cbind(Group,total_table) #Binding toghter

#Organizing Variabels
total_table<-total_table[c("Group","In Closeness(M)", "In Closeness(SD)", "Out Closeness(M)", "Out Closeness(SD)", "Total Closeness(M)","Total Closeness(SD)","In Closeness Normalized(M)", "In Closeness Normalized(SD)", "Out Closeness Normalized(M)", "Out Closeness Normalized(SD)", "Total Closeness Normalized(M)","Total Closeness Normalized(SD)", "Centralization Closeness(M)","Centralization Closeness(SD)")]

4.11 Plotting final table with round for Closseness

datatable(total_table, filter = 'top')

4.12 Creating a datagrame of measures (Setores)

var12_df_closseness <- data.frame(
var12_incloseness,
var12_outcloseness,
var12_totalcloseness,
var12_incloseness_n,
var12_outcloseness_n,
var12_totalcloseness_n,
var12_centr_closeness) %>% round(6)

#Adding type
var12_df_closseness <-cbind(var12_df_closseness, V(var12)$TIPO2)

#Adding names
names(var12_df_closseness) <- c("In Closeness", "Out Closeness", "Total Closeness","In Closeness Normalized", "Out Closeness Normalized", "Total Closeness Normalized","Centralization Closeness","Type")

#Ordering Variables
var12_df_closseness<-var12_df_closseness[c("Type","In Closeness", "Out Closeness", "Total Closeness","In Closeness Normalized", "Out Closeness Normalized","Total Closeness Normalized", "Centralization Closeness")]

4.13 General tabel - DT

datatable(var12_df_closseness, filter = 'top')

4.14 Aggregating data from previous table - mean

aggdata_mean <-aggregate(var12_df_closseness, by=list(var12_df_closseness$Type), FUN=mean, na.rm=TRUE)

names(aggdata_mean) <- c("Group","Type","In Closeness(M)", "Out Closeness(M)", "Total Closeness(M)","In Closeness Normalized(M)", "Out Closeness Normalized(M)", "Total Closeness Normalized(M)","Centralization Closeness(M)")
  
#Removing Type variable
aggdata_mean<-aggdata_mean[,-c(2)]

4.15 Aggregating data from previous table - sd

aggdata_sd <-aggregate(var12_df_closseness, by=list(var12_df_closseness$Type), FUN=sd, na.rm=TRUE) 

names(aggdata_sd) <- c("Group","Type","In Closeness(SD)", "Out Closeness(SD)", "Total Closeness(SD)","In Closeness Normalized(SD)", "Out Closeness Normalized(SD)", "Total Closeness Normalized(SD)", "Centralization Closeness(SD)")

#Removing Type variable
aggdata_sd<-aggdata_sd[,-c(2)]

#Merging mean and standart deviation
total_table <- merge(aggdata_mean,aggdata_sd,by="Group")

#Rounding
Group<-total_table[,c(1)] #Keeping group
total_table<-total_table[,-c(1)] %>% round(6) #Rouding
total_table<-cbind(Group,total_table) #Binding toghter

#Organizing Variabels
total_table<-total_table[c("Group","In Closeness(M)", "In Closeness(SD)", "Out Closeness(M)", "Out Closeness(SD)", "Total Closeness(M)","Total Closeness(SD)","In Closeness Normalized(M)", "In Closeness Normalized(SD)", "Out Closeness Normalized(M)", "Out Closeness Normalized(SD)", "Total Closeness Normalized(M)","Total Closeness Normalized(SD)", "Centralization Closeness(M)","Centralization Closeness(SD)")]

4.16 Plotting final table with round for Closseness

datatable(total_table, filter = 'top')

5 Saving objects with new variables and changes

save.image("~/SNArRDJF/Robject/var12_data.RData")